package domain;


public class Residencial extends Usuario {
	private String nombre;
	private String apellido;
	private TarifaResidencial tarifa;
	
	public Residencial(String calle, String altura, String piso, String dpto,
			String codigoPostal, String localidad, String provincia,
			String nombre, String apellido,TarifaResidencial tarifa) {
		super(calle, altura, piso, dpto, codigoPostal, localidad, provincia);
		this.nombre = nombre;
		this.apellido = apellido;
		this.tarifa = tarifa;
	}
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public String getApellido() {
		return apellido;
	}
	public void setApellido(String apellido) {
		this.apellido = apellido;
	}

	/**
	 * @param tarifa the tarifa to set
	 */
	public void setTarifa(TarifaResidencial tarifa) {
		this.tarifa = tarifa;
	}

	/**
	 * @return the tarifa
	 */
	public TarifaResidencial getTarifa() {
		return tarifa;
	}
	
	public Factura generarFactura()
	{
		float ultimoConsumo = (this.ultimaFactura()!=null)?this.ultimaFactura().getConsumo():0;
		float consumo=this.ultimaMedicion().getConsumo()- ultimoConsumo;
		
		float importe=consumo*this.getTarifa().getValorMetroCubico();
		float impuestos=importe*(1+this.getTarifa().getContribucionesMunicipales())*(1+this.getTarifa().getIva());
		float descuentos=0;
		float total=importe+impuestos;
		if (total<150)
		{
			descuentos=(float) (total*0.05);
		}
		Factura f=new Factura(this,consumo,impuestos,total,descuentos);
		return f;
		
	}
	
	public String toString(){
		return this.getNombre()+ " " + this.getApellido() + "(Categoria Residencial) ";
	}
}
